﻿using System.Web;
using System.Web.UI;

namespace Shp.Web.UI.WebControls.Iconized
{
   /// <summary>
   /// Interface used to define common IconizedButton memebers.
   /// </summary>
   public interface IIconizedButton
   {
      /// <summary>
      /// Gets or sets the button skin.
      /// </summary>
      /// <value>The button skin.</value>
      ButtonSkinType ButtonSkin { get; set; }

      /// <summary>
      /// Gets or sets the custom CSS class.
      /// </summary>
      /// <value>The custom CSS class.</value>
      string CustomCssClass { get; set; }

      /// <summary>
      /// Gets or sets the type of the icon.
      /// </summary>
      /// <value>The type of the icon.</value>
      IconType IconType { get; set; }

      string CustomIconType { get; set; }

      /// <summary>
      /// Gets or sets the icon position.
      /// </summary>
      /// <value>The icon position.</value>
      IconPositionType IconPosition { get; set; }

      /// <summary>
      /// Gets or sets a value indicating whether [round corners].
      /// </summary>
      /// <value><c>true</c> if [round corners]; otherwise, <c>false</c>.</value>
      bool RoundCorners { get; set; }

      /// <summary>
      /// Gets or sets a value indicating whether to [display mouse out style].
      /// </summary>
      /// <value>
      /// 	<c>true</c> if to [display mouse out style]; otherwise, <c>false</c>.
      /// </value>
      bool DisplayMouseOutStyle { get; set; }

      /// <summary>
      /// Gets or sets the control's text.
      /// </summary>
      /// <value>The text.</value>
      string Text { get; set; }

      /// <summary>
      /// Gets or sets the control's CSS class.
      /// </summary>
      /// <value>The CSS class.</value>
      string CssClass { get; set; }

      /// <summary>
      /// Gets or sets the control's parent Page control.
      /// </summary>
      /// <value>The page.</value>
      Page Page { get; set; }

      /// <summary>
      /// Gets the current HttpContext.
      /// </summary>
      /// <value>The current context.</value>
      HttpContext CurrentContext { get; }
      
      /// <summary>
      /// Gets a dictionary of state information that allows you to save and restore
      /// the view state of a server control across multiple requests for the same
      /// page.
      /// </summary>
      /// <value>The control's ViewState.</value>
      StateBag ControlViewState { get; }

      /// <summary>
      /// Gets or sets a value indicating whether the control is enabled.
      /// </summary>
      /// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>
      bool Enabled { get; set; }
   }
}
